package com.angel.sensors.model;

import android.content.Context;
import android.os.Handler;

/**
 * Clase base para los sensores derivados
 * Extiende la clase BaseMaeter
 * 
 * Implementa las acciones de tiempo para las clases hijas
 */
abstract public class DerivedMeter extends BaseMeter {
    private Handler handler = new Handler();
    private long timerInterval;

    public DerivedMeter(Context context) {
        super(context);
    }
    
    protected void startTimer(long interval) {
        if (interval <= 0) {
            throw new IllegalArgumentException("Intervalo de tiempo debe ser mayor que cero");
        }
        
        if (timerInterval == 0L) {
            handler.removeCallbacks(updateTimeTask);
            handler.postDelayed(updateTimeTask, interval);
        }
        timerInterval = interval;
    }
    
    protected void stopTimer() {
        handler.removeCallbacks(updateTimeTask);
        timerInterval = 0L;
    }
    
    protected void onTimer() {
    }
    
    private Runnable updateTimeTask = new Runnable() {
        public void run() {
            onTimer();
            handler.postDelayed(this, timerInterval);
        }
     };
}